Lender Price API
In This Topic
    Pricing Interpolation
    In This Topic

    When searching for a loan, a client can use either target rates or target pricing. The default approach in a multisearch or single search call uses a fixed rate, which is set as described in the Rates documentation. 

    However, using pricing interpolation, a client can perform the reverse and set a fixed price to find the rate that applies to them based on the fixed price, known as the target interpolated pricing. 

    Request

    Pricing interpolation uses the pricing call at the {{protocol}}{{domain}}/rest/pricing/multisearch/{{userId}} endpoint. The request parameters to use the pricing interpolation feature are found in the MultiCriteriaSearchModel object at the top level of the request data and are listed below.

    Show Interpolated Pricing

    Set MultiCriteriaSearchModel.showInterpolatedPricing to True to toggle the interpolation on and treat the pricing call as an interpolated pricing request. The results will then include rates for interpolated pricing along with normal rates.

    The default value is False. If this field is false, values set in MultiCriteriaSearchModel.targetInterpolatedPrice and MultiCriteriaSearchModel.onlyShowTargetPrice will have no effect.

    showInterpolatedPricing
    Copy Code
    "showInterpolatedPricing": true,
     

    Target Interpolated Price

    targetInterpolatedPrice is a numeric field used to specify the target price that the pricing search will attempt to interpolate rates for. The price value should be given in 0-base format.

    Note: Set to 0 to search for the lowest possible rates. Set to null or do not populate if interpolating for a target rate instead.

    targetInterpolatedPrice
    Copy Code
    "targetInterpolatedPrice": 5,

     Only Show Target Price

    Set onlyShowTargetPrice to True to only include results whose adjustedPoints match the targetInterpolatedPrice. Any results that do not match that price will be omitted. Rates that do not contain any matching results will also be omitted.

    Setting this field to True uses the target price, while setting to False gets the closest to par pricing.

    Note: If showInterpolatedPricing is False or targetInterpolatedPrice is null, setting this field will have no effect.

    Par Pricing

    Par pricing is another term for when the target interpolated price is 0.

    par pricing
    Copy Code
    targetInterpolatedPrice: 0

    Adjusted Points

    The adjustedPoints field represents the final pricing points, with adjustments included. The target interpolated price set in the request references the pricing value in adjustedPoints within the response.

     

    Rate and Rates with Interpolated Pricing

    rate and rates allow the user to specify which rates to include in the pricing results. If showInterpolatedPricing is set to True, this will override the rate grid, meaning that any rates that do not exist in the rate grid will still be interpolated and included in the results. Otherwise, the non-existent rates will not be included.

    The rate field takes in a single numerical value, while the rates field takes in an array of numerical values. If provided, the value from the rate field will be appended to the rates array internally during pricing. Thus, the user can use either or both fields to specify rates.

    Note: the pricer can only interpolate for either a target price or a target rate(s) in one search. If both the targetInterpolatedPrice and either rate, rates, or both are provided, then the targetInterpolatedPrice will take precedence and the rate and rates fields will only act as a filter. That is, no new rates will be generated during pricing interpolation based on the given rates values.

    See Working with Rates for more information on setting rates.

     

    Show All Day Locks for Interpolated Rates

    To show all day locks for interpolated rates, set MultiCriteriaSearchModel.showAllDayLocksForInterpolatedRates to True.

    Setting Interpolated Pricing fields
    Copy Code

    Response

    The data response returns the interpolated rates in the interpolatedRates field.  Individual data results beneath each rate will indicate whether this rate result is interpolated in the interpolated field.

    Interpolated rates
    Copy Code
    "resultMap": [
        {
          "resultRates": {
            "allowModifiedDate": true,
            "dayLock": 30,
            "dayLocksList": [],
            "interpolatedRates": [
              2.557,
              2.561,
              2.691,
              2.697,
              2.543,
              2.548
            ],
    Interpolated indicator
    Copy Code
    "brokerPaidDetails": [],
    "otherPaidDetails": [],
    "hideDisqualified": false,
    "disqualified": false,
    "interpolated": true,
    "interpolationTarget": false,
    "groupAdjustmentProperties": [
    {

     Examples

     Interpolating for a target price

    To interpolate rates for a target price, set showInterpolatedPricing to True and targetInterpolatedPrice to the desired pricing points, as shown. Note that the target pricing set here corresponds to the adjusted points value.

    The result will return data for the interpolated rates along with the normal rates. Interpolated rates are listed in the interpolatedRates field, while rateSet lists all rates in the results. In the data container, individual line results are listed under each rate. Each line result indicates whether the rate is interpolated in the interpolated field.

    Request
    Copy Code
    curl --location -g --request POST '{{protocol}}{{domain}}/rest/pricing/multisearch/{{userId}}' \
     --header 'secret: {{token}}' \
    --header 'companyid: {{companyId}}' \
     --data-raw '{
         "showInterpolatedPricing": true,
         "targetInterpolatedPrice": 3,
     }'
    Response
    Copy Code
    {
      "dataEventId": "60774ad02209c4000191d6da-6863",
      "baseSearch": {
        "id": "60774ad02209c4000191d6d0",
      },
      "resultMap": [
        {
          "resultRates": {
            "interpolatedRates": [
              2.557,
              2.561
            ],
            "rateSet": [
              2.25,
              2.375,
              2.557,
              2.561
            ],
            "monthlyPaymentMapByRate": {
              "2.25": 1528.98,
              "2.375": 1554.61,
              "2.557": 1592.36,
              "2.561": 1593.2
            },
           "data": {
              "2.25": [
                {
                  "dti": 0.735796,
                  "hti": 0.305796,
                  "mortgageType": "Conventional",
                  "loanPurpose": "Purchase",
                  "loanAmount": 400000,
                  "term": 30,
                  "dayLock": 30,
                  "baseRates": 2.25,
                  "adjustedRates": 2.25,
                  "adjustmentRates": 0,
                  "loanLimitLite": {},
                  "basePoints": 1.97,
                  "adjustedPoints": 1.972,
                  "adjustedPointsBorrowerPaid": 1.972,
                  "adjustmentPoints": 0.0020000000000000018,
                  "adjustmentPointsBorrowerPaid": 0.0020000000000000018,
                  "rawAdjustmentPoints": 0.0020000000000000018,
                  "rawAdjustmentPointsBorrowerPaid": 0.0020000000000000018,
                  "armIndexRate": 0,
                  "notRoundedAPR": 2.4,
                  "borrowerPaid": 7888,
                  "borrowerPaidDetails": [
                    {
                      "line": "",
                      "points": 1.972,
                      "amount": 7888.000000000001,
                    }
                  ],
                  "interpolated": false,
                  "interpolationTarget": false,   
                  },
                  "apr": 2.3999,
               ],
              "2.375": [
                {
                  "dti": 0.740922,
                  "hti": 0.310922,
                  "mortgageType": "Conventional",
                  "loanPurpose": "Purchase",
                  "loanAmount": 400000,
                  "term": 30,
                  "dayLock": 30,
                  "baseRates": 2.375,
                  "adjustedRates": 2.375,
                  "adjustmentRates": 0, 
                  "basePoints": 1.165,
                  "adjustedPoints": 1.167,
                  "adjustedPointsBorrowerPaid": 1.167,
                  "adjustmentPoints": 0.0020000000000000018,
                  "adjustmentPointsBorrowerPaid": 0.0020000000000000018,
                  "rawAdjustmentPoints": 0.0020000000000000018,
                  "rawAdjustmentPointsBorrowerPaid": 0.0020000000000000018,
                  "armIndexRate": 0,
                  "notRoundedAPR": 2.464,
                  "borrowerPaid": 4668,                     
                  "lenderPaid": 4668,
                  "interpolated": false,
                  "interpolationTarget": false
               ],
              "2.557": [
                {
                  "dti": 0.7484719999999999,
                  "hti": 0.318472,
                  "mortgageType": "Conventional",
                  "loanPurpose": "Purchase",
                  "loanAmount": 400000,
                  "term": 30,
                  "dayLock": 30,
                  "baseRates": 2.557,
                  "adjustedRates": 2.557,
                  "adjustmentRates": 0,
                  "adjustedPoints": 0,
                  "adjustedPointsBorrowerPaid": 0,
                  "adjustmentPoints": 0,
                  "adjustmentPointsBorrowerPaid": 0,
                  "rawAdjustmentPoints": 0,
                  "rawAdjustmentPointsBorrowerPaid": 0,
                  "armIndexRate": 0,
                  "notRoundedAPR": 2.557,
                  "brokerPaidDetails": [],
                  "otherPaidDetails": [],
                  "hideDisqualified": false,
                  "disqualified": false,
                  "interpolated": true,
                  "interpolationTarget": true
               ],
              "2.561": [
                {
                  "dti": 0.74864,
                  "hti": 0.31864000000000003,
                  "mortgageType": "Conventional",
                  "loanPurpose": "Purchase",
                  "loanAmount": 400000,
                  "term": 30,
                  "dayLock": 30,
                  "baseRates": 2.561,
                  "adjustedRates": 2.561,
                  "adjustmentRates": 0,
                         
                  "basePoints": 0,
                  "adjustedPoints": 0.012,
                  "adjustedPointsBorrowerPaid": 0.04200000000000001,
                  "adjustmentPoints": 0.0020000000000000018,
                  "adjustmentPointsBorrowerPaid": 0.01200000000000001,
                  "rawAdjustmentPoints": 0.0020000000000000018,
                  "rawAdjustmentPointsBorrowerPaid": 0.01200000000000001,
                  "armIndexRate": 0,
                  "notRoundedAPR": 2.562,
                  "borrowerPaid": 168,
                  "interpolated": true,
                  "interpolationTarget": true,
                }
              ]
           }
        }
     ]
     Interpolating for a Target Rate

    To interpolate for a target rate, do not set a value for targetInterpolatedPrice and instead set a value in the rate field.

    Request
    Copy Code
    curl --location -g --request POST '{{protocol}}{{domain}}/rest/pricing/multisearch/{{userId}}' \
    --header 'secret: {{token}}' \
    --header 'companyid: {{companyId}}' \
    --data-raw '{
        "showInterpolatedPricing": true,
        "targetInterpolatedPrice": null,
        "rate": 2.5
           
    }'
    Response
    Copy Code
    {
    "resultMap": [
        {
          "resultRates": {
            "allowModifiedDate": true,
            "dayLock": 30,
            "dayLocksList": [],
            "interpolatedRates": [
              2.557
            ],
            "rateSet": [
              2.557
            ],
            "monthlyPaymentMapByRate": {},
     "data": {
        "2.557": [
                 {
                  "dti": 0.7484719999999999,
                  "hti": 0.318472,
                  "mortgageType": "Conventional",
                  "loanPurpose": "Purchase",
                  "loanAmount": 400000,
                  "term": 30,
                  "dayLock": 30,
                  "baseRates": 2.557,
                  "adjustedRates": 2.557,
                  "adjustmentRates": 0,
                  "basePoints": 0,
                  "adjustedPoints": 0,
                  "adjustedPointsBorrowerPaid": 0,
                  "adjustmentPoints": 0,
                  "adjustmentPointsBorrowerPaid": 0,
                  "rawAdjustmentPoints": 0,
                  "rawAdjustmentPointsBorrowerPaid": 0,
                  "armIndexRate": 0,
                  "notRoundedAPR": 2.557,
                  "interpolated": true,
                  "interpolationTarget": true
          }
         ]
       }
    }
     Only show Interpolated Rates
    Request
    Copy Code
    curl --location -g --request POST '{{protocol}}{{domain}}/rest/pricing/multisearch/{{userId}}' \
    --header 'secret: {{token}}' \
    --header 'companyid: {{companyId}}' \
    --data-raw '{
        "showInterpolatedPricing": true,
        "targetInterpolatedPrice": 3,
        "onlyShowTargetPrice": true
    }'

     

    Response
    Copy Code
    {
    "resultMap": [
        {
           "resultRates": {
            "interpolatedRates": [
              2.557,
              2.561
            ],
            "rateSet": [
              2.557,
              2.561
            ],
            "monthlyPaymentMapByRate": {},
     "data": {
        "2.557": [
                 {
                  "dti": 0.7484719999999999,
                  "hti": 0.318472,
                  "mortgageType": "Conventional",
                  "loanPurpose": "Purchase",
                  "loanAmount": 400000,
                  "term": 30,
                  "dayLock": 30,
                  "baseRates": 2.557,
                  "adjustedRates": 2.557,
                  "adjustmentRates": 0,
                  "basePoints": 0,
                  "adjustedPoints": 0,
                  "adjustedPointsBorrowerPaid": 0,
                  "adjustmentPoints": 0,
                  "adjustmentPointsBorrowerPaid": 0,
                  "rawAdjustmentPoints": 0,
                  "rawAdjustmentPointsBorrowerPaid": 0,
                  "armIndexRate": 0,
                  "notRoundedAPR": 2.557,
                  "interpolated": true,
                  "interpolationTarget": true
                }
              ],
              "2.561": [
                {
                  "dti": 0.74864,
                  "hti": 0.31864000000000003,
                  "mortgageType": "Conventional",
                  "loanPurpose": "Purchase",
                  "loanAmount": 400000,
                  "term": 30,
                  "dayLock": 30,
                  "baseRates": 2.561,
                  "adjustedRates": 2.561,
                  "adjustmentRates": 0,
                        
                  "basePoints": 0,
                  "adjustedPoints": 0.012,
                  "adjustedPointsBorrowerPaid": 0.04200000000000001,
                  "adjustmentPoints": 0.0020000000000000018,
                  "adjustmentPointsBorrowerPaid": 0.01200000000000001,
                  "rawAdjustmentPoints": 0.0020000000000000018,
                  "rawAdjustmentPointsBorrowerPaid": 0.01200000000000001,
                  "armIndexRate": 0,
                  "notRoundedAPR": 2.562,
                  "borrowerPaid": 168,
                  "interpolated": true,
                  "interpolationTarget": true,
                }
              ]
           }
        }
     ]